<?php

// use Illuminate\Support\Facades\Schema;
use Jialeo\LaravelSchemaExtend\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class InitCategory extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        // 通用分类表， 比如商品分类、文章分类 
        Schema::create('categories', function (Blueprint $table) {
            $table->comment = '分类表';
            
            $table->increments('id');
            $table->uuid('uuid')->index();

            $table->string('thumb', 255)->nullable()->comment('分类图片');  // 分类图片
            $table->string('title', 100)->comment('分类标题');              // 分类标题
            $table->string('sub_title', 100)->nullable()->comment('子标题');   // 子标题 
            $table->string('description')->nullable()->comment('短描述 '); //  短描述 

            $table->string('type', 25)->index()->comment('分类类型, 如product为商品分类、 article为文章分类');  // 分类类型, 如product为商品分类、 article为文章分类

            $table->boolean('is_home')->default(0)->index()->comment('是否显示到首页');  // 是否显示到首页

            $table->boolean('is_listed')->default(1)->index()->comment('是否显示在分类列表页');  // 是否显示在分类列表页
            $table->integer('list_weight')->default(99)->index()->comment('列表权重'); // 列表权重

            $table->tinyInteger('level')->default(1)->index()->comment('分类层级，默认最顶上的一级分类');   // 分类层级，默认最顶上的一级分类
            $table->integer('parent_id')->nullable()->index()->comment('父级分类id');   // 父级分类id

            $table->softDeletes();
            $table->timestamps();
        });

        Schema::create('category_relations', function (Blueprint $table) {
            $table->comment = '分类关联表';
            
            $table->integer('target_id')->unsigned()->index()->comment('绑定的目标id，可能为product或者article等可绑定分类的ID，');   // 绑定的目标id，可能为product或者article等可绑定分类的ID，
            $table->integer('category_id')->unsigned()->index()->comment('分类id');  
            $table->string('type', 30)->index()->comment('分类类型, 同categories表中type字段');  // 分类类型, 同categories表中type字段
            $table->timestamps();

            $table->primary(['target_id', 'category_id', 'type']);
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::disableForeignKeyConstraints(); 
        Schema::dropIfExists('category_relations');
        Schema::dropIfExists('categories');
    }
}
